package org.aphasia4j.service;

import java.util.List;

import org.aphasia4j.dao.TaskDao;
import org.aphasia4j.model.Task;

/**
 * Interface description for task related requests.
 * 
 * @author hillger.t
 */
public interface TaskService extends BaseService<TaskDao, Task> {

  /**
   * Creates a picture practice task with only one practice with the given
   * amount of words.
   * 
   * @param wCount The amount of words to use for a practice.
   * @return The newly created task.
   */
  public Task newPicturePracticeTask(int wordCount);

  /**
   * Creates a picture practice task with the given amount of practices and
   * words.
   * 
   * @param wCount The amount of words to use for a practice.
   * @param pCount The amount of practices in the created task.
   * @return The newly created task.
   */
  public Task newPicturePracticeTask(int wordCount, int practiceCount);

  /**
   * Retrieves all tasks for a given patient identifier value.
   * 
   * @param id The patient's identifier value.
   * @return
   */
  public List<Task> findTasksByPatient(long patientId);

  /**
   * Retrieves all tasks for a given patient name. Note that in this case is it
   * will be searched by the patient's last name. Also the search is not case
   * sensitive.
   * 
   * @param name The last name part of a patient.
   * @return
   */
  public List<Task> findTasksByPatientName(String name);
}
